#include "mainwindow.h"

#include <QMenuBar>
#include <QPushButton>
#include <QToolBar>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
    //重置窗口大小
    resize(400,400);

    //创建菜单栏，只能有一个
    //menuBar:MainWindow的成员函数
    QMenuBar* bar=menuBar();
    //将菜单栏放入窗口中
    setMenuBar(bar);
    //创建菜单
    QMenu* fileMenu=bar->addMenu("文件");
    QMenu* editMenu=bar->addMenu("编辑");
    //创建菜单项
    QAction* newAction=fileMenu->addAction("新建");
    //添加分割线
    fileMenu->addSeparator();
    QAction* openAction=fileMenu->addAction("打开");
    fileMenu->addSeparator();
    QAction* saveAction=fileMenu->addAction("保存");

    // 创建工具栏 允许多个
    QToolBar* toolBar=new QToolBar("工具栏",this);
    addToolBar(Qt::LeftToolBarArea,toolBar);//默认左边停靠
    //只允许左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    toolBar->setFloatable(false);//禁止悬浮
    //toolBar->setMovable(false);//禁止移动

    //设置工具栏选项
    toolBar->addAction(newAction);//与菜单栏公用
    toolBar->addSeparator();
    toolBar->addAction("显示");
    toolBar->addSeparator();
    toolBar->addAction(openAction);
    QPushButton* btn=new QPushButton("按钮",this);
    toolBar->addWidget(btn);

    // 状态栏 最多一个
    QStatusBar* stBar=statusBar();//创建状态栏
    setStatusBar(stBar);//设置到窗口中
    //设置标签控件
    QLabel* lable=new QLabel("状态栏",this);
    stBar->addWidget(lable);
    QLabel* lable2=new QLabel("状态栏",this);
    stBar->addPermanentWidget(lable2);

    // 铆接部件（浮动窗口） 允许多个
    QDockWidget* dockWidget=new QDockWidget("浮动窗口",this);
    addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
    //只允许上下
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

    // 设置中心部件 只能一个
    QTextEdit* edit=new QTextEdit(this);
    setCentralWidget(edit);
    //添加qt资源文件： “ :+前缀名+文件名”
    //ui->actionNew->setIcon(QIcon(":/Camera Roll/1.png"));
    //对话框的创建
    connect(ui->actionNew,&QAction::triggered,[=](){
    //1.模态对话框：打开对话框后不可以对其他地方操作，阻塞在这里
    // QDialog dlg(this);
    // dlg.resize(200,200);
    // dlg.exec();
    //2.非模态对话框:可以对其他窗口操作
    // QDialog* dlg2=new QDialog(this);//栈上资源出了函数自动释放，这里要用堆
    // dlg2->resize(200,200);
    // dlg2->show();
    // dlg2->setAttribute(Qt::WA_DeleteOnClose);//避免打开过多对话框占用资源
    //系统自带的消息对话框
    //QMessageBox::critical(this,"critical","错误对话框");
    //QMessageBox::information(this,"critical","信息对话框");
    //参数1：父亲 2：标题 3：提示内容 4：按键类型 5：回车键默认关联按键类型
    // if(QMessageBox::Save==QMessageBox::question(this,"critical","提问对话框",QMessageBox::Save | QMessageBox::Cancel))
    // {
    // }
    // else
    // {
    // }
    // QMessageBox::warning(this,"waring","警告对话框");
    //颜色对话框
    //QColor color=QColorDialog::getColor(QColor(255,0,0));
    // qDebug()<<"r"<<color.red()<<" "color.green()<<" "<<color.blue();

    //文件对话框 1：父亲 2：标题 3：默认打开路径 4：过滤文件格式
    // QString str=QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\Administrator\\Desktop","(*.word)");
    // qDebug()<<str;
    //
    //
    //字体对话框
    bool flag;
    QFont font=QFontDialog::getFont(&flag,QFont("微软雅黑",36));
    });
    }
MainWindow::~MainWindow()
{
delete ui;
}
